设置数字输出逻辑
本指南介绍如何配置 OV20i 的数字输出,以根据检测结果控制外部设备。该相机具有 2 个数字输出,采用 True/False 逻辑操作,用于触发分拣机构、指示灯、报警器或其他自动化设备。
数字输出的使用场景: 自动分拣系统、合格/不合格指示灯、剔除机构、报警系统、PLC 通信,或任何需要根据检测结果触发的外部设备。
先决条件
- 已设置并连接的 OV20i 相机系统
- 配置了检测逻辑的活动 recipe
- 需要控制的外部设备(测试时可选)
- 数字 I/O 基础知识
数字输出规格
OV20i 通过 M12 接头提供 2 个数字输出:
输出 | 引脚号 | 线色 | 功能 |
---|---|---|---|
数字输出 1 | 10 | 紫色 | 可配置输出 |
数字输出 2 | 11 | 灰色/粉色 | 可配置输出 |
工作逻辑:
- True = 输出开启(24V)
- False = 输出关闭(0V)
步骤 1:访问 Node-RED 编辑器
1.1 导航至 IO Block
- 在 Recipe Editor 中打开活动 recipe
- 点击面包屑菜单中的“IO Block”
- 点击“Configure IO”进入 Node-RED 编辑器
1.2 验证 Node-RED 界面
检查点: 应显示左侧节点面板的 Node-RED 流编辑器。
步骤 2:添加数字输出节点
2.1 定位输出节点
- 在左侧面板(Overview 区域)找到“Output”节点
- 将“Output”节点拖拽到流程画布
- 双击节点进行配置
2.2 配置输出设置
节点配置:
设置 | 选项 | 说明 |
---|---|---|
输出引脚 | DO0, DO1 | 选择要控制的物理输出 |
初始状态 | OFF, ON | 系统启动时的初始状态 |
名称 | 自定义文本 | 可选标签,便于识别 |
2.3 输出配置步骤
- 选择输出引脚:
- DO0 = 数字输出 1(引脚 10,紫色线)
- DO1 = 数字输出 2(引脚 11,灰色/粉色线)
- 设置初始状态:
- OFF = 输出启动时关闭(推荐)
- ON = 输出启动时开启
- 命名节点:
- 使用描述性名称,如“Reject_Signal”或“Pass_Light”
- 点击“Done”保存配置
步骤 3:连接逻辑到输出
3.1 基本的合格/不合格输出
用于简单的合格/不合格指示:
- 添加“Final Pass/Fail Output”节点(如未存在)
- 连接:Final Pass/Fail → Output 节点
- 结果:检测合格时输出激活
3.2 反向逻辑(不合格信号)
在检测失败时触发输出:
- 在合格/不合格与输出之间添加“function”节点
- 配置 function 节点代码:
// 反转合格/不合格信号 - 确保输出为布尔值
msg.payload = !msg.payload;
return msg;
- 连接:Final Pass/Fail → Function → Output 节点
- 结果:检测失败时输出激活
3.3 基于分类结果的自定义逻辑
使用分类或其他检测数据时:
- 添加“function”节点,将结果转换为布尔值
- 配置 function 代码示例:
// 将分类结果转换为布尔值
// 示例:针对特定类别激活输出
if (msg.payload.class === "Defective") {
msg.payload = true; // 输出开启
} else {
msg.payload = false; // 输出关闭
}
return msg;
- 连接:数据源 → Function → Output 节点
3.4 布尔转换示例
针对不同数据源,始终转换为布尔值:
基于置信度值:
// 当置信度低于阈值时激活
msg.payload = (msg.payload.confidence < 0.8);
return msg;
基于 ROI 结果:
// 任一 ROI 未通过时激活
msg.payload = msg.payload.roi_results.some(roi => !roi.pass);
return msg;
备注
Output 节点需要布尔输入(true/false)。连接到 Output 节点前,请确保逻辑输出为布尔值。
步骤 4:创建脉冲输出(推荐)
4.1 为什么使用脉冲输出
推荐使用脉冲输出的原因:
- 提供清晰的信号指示
- 防止输出长时间保持开启
- 更适合触发外部设备
- 便于排查信号时序问题
4.2 添加触发节点
- 从 Function 区域添加“trigger”节点
- 将其放置在逻辑源与输出节点之间
- 双击 trigger 节点进行配置
4.3 配置触发设置
脉冲配置:
设置 | 推荐值 | 说明 |
---|---|---|
发送 | True | 初始发送信号 |
等待时间 | 500ms | 脉冲持续时间 |
随后发送 | False | 延时后的信号 |
延长延时 | 禁用 | 不延长新消息时的延时 |
4.4 触发配置步骤
- 首次输出:
- 发送:
boolean
→true
- 输出开启
- 发送:
- 延时设置:
- 等待时间:
500
毫秒 - 随后发送:
boolean
→false
- 延时后输出关闭
- 等待时间:
- 高级选项:
- 新消息到达时延长延时: 未勾选
- 新消息到达时停止现有延时: 勾选
- 点击“Done”保存
4.5 连接脉冲配置
节点连接顺序: 逻辑源 → 触发器 → 输出节点
示例流程: Final Pass/Fail → Trigger → Output (DO0)
步骤 5:部署并测试配置
5.1 部署流程
- 点击右上角“Deploy”按钮
- 确认部署成功消息
- 检查节点状态指示
5.2 监控数字 I/O 状态
使用内置的 I/O 监控界面:
- 导航至主界面中的“Digital I/O”页面
- 实时观察输出状态
- 查看“最后状态变化”时间戳
I/O 状态界面显示:
- 当前输出状态(ON/OFF)
- 最后状态变化时间戳
- 实时状态更新
5.3 测试输出激活
手动测试:
- 添加“inject”节点用于测试
- 配置 inject 节点:
- Payload:
boolean
→true
- 名称: “Test Output”
- Payload:
- 连接:Inject → Trigger → Output
- 点击 inject 按钮测试输出
- 在 I/O 状态界面验证输出激活
步骤 6:高级输出配置
6.1 多输出控制
同时控制两个输出:
- 为 DO0 和 DO1 添加独立输出节点
- 将相同逻辑源连接到两个输出
- 根据需要使用不同触发延时
6.2 条件输出选择
根据条件路由到不同输出:
- 添加 Function 区域的“switch”节点
- 配置路由规则:
// 根据分类结果路由
if (msg.payload.class === "Large") {
return [msg, null]; // 发送到第一个输出(DO0)
} else if (msg.payload.class === "Small") {
return [null, msg]; // 发送到第二个输出(DO1)
}
return [null, null]; // 无输出
- 将 switch 输出连接到对应输出节点
6.3 延时输出序列
创建定时输出序列:
- 添加多个触发节点,设置不同延时
- 配置序列时序:
- 第一个触发:100ms 脉冲
- 第二个触发:500ms 延时后 200ms 脉冲
- 串联连接,实现顺序激活
步骤 7:集成示例
7.1 分拣系统集成
双向分拣设置:
- DO0(输出 1): 良品输送线
- DO1(输出 2): 不良品剔除机构
Final Pass/Fail → Switch Node → Trigger → DO0 (合格)
→ Trigger → DO1 (不合格)
7.2 报警系统集成
多级报警系统:
- DO0: 警告灯(轻微缺陷)
- DO1: 报警蜂鸣器(严重缺陷)
Classification Logic → Function (检查严重性) → 适当输出
7.3 PLC 通信
简单 PLC 握手信号:
- DO0: 检测完成信号
- DO1: 零件剔除信号
所有块输出 → 格式化为 PLC → 触发 → DO0
→ 剔除逻辑 → 触发 → DO1
步骤 8:输出问题排查
8.1 输出未激活
问题 | 检查项 | 解决方案 |
---|---|---|
无输出信号 | 节点连接 | 确认所有线缆连接正确 |
逻辑未触发 | 输入条件 | 检查合格/不合格逻辑配置 |
时序问题 | 触发设置 | 调整脉冲持续时间 |
错误引脚激活 | 输出引脚选择 | 核实 DO0/DO1 配置 |
8.2 使用 I/O 状态排查
Digital I/O 界面帮助识别:
- 当前输出状态: 查看输出是否变化
- 最后状态变化: 验证输出激活时序
- 状态历史: 跟踪输出行为变化
I/O 界面排查提示:
- 输出始终显示“OFF”: 逻辑可能未触发
- 输出始终显示“ON”: 缺少脉冲配置
- 无时间戳更新: 检查 Node-RED 连接
- 状态频繁变化: 逻辑触发过于频繁
8.3 外部设备问题
问题 | 原因 | 解决方案 |
---|---|---|
设备无响应 | 电压不匹配 | 确认 24V 兼容性 |
间歇性工作 | 线缆问题 | 检查 M12 接头接线 |
响应延迟 | 外部设备时序 | 调整脉冲持续时间 |
步骤 9:测试与验证
9.1 系统测试
逐项测试每个输出:
测试项 | 预期结果 | 状态 |
---|---|---|
手动触发 DO0 | 输出 1 激活脉冲持续时间 | ☐ |
手动触发 DO1 | 输出 2 激活脉冲持续时间 | ☐ |
合格条件 | 正确输出激活 | ☐ |
不合格条件 | 正确输出激活 | ☐ |
I/O 状态更新 | 时间戳显示状态变化 | ☐ |
9.2 生产验证
投产前:
- 使用实际零件和检测条件测试
- 确认输出时序满足外部设备要求
- 确保电气连接牢固
- 记录输出分配,便于维护
9.3 性能验证
关注以下方面:
- 响应时间: 检测后输出激活延迟
- 可靠性: 输出行为稳定一致
- 时序准确性: 脉冲持续时间符合配置
成功!您的数字输出已准备就绪
您的数字输出系统现可:
- 根据检测结果控制外部设备
- 提供脉冲信号,实现可靠触发
- 支持多输出配置,满足复杂自动化需求
- 与 PLC 和分拣系统集成,实现生产自动化
- 通过内置 I/O 界面监控输出状态
持续维护
定期系统检查
- 监控 I/O 状态界面,确保运行稳定
- 验证输出时序符合规范
- 检查 M12 接头电气连接
- 定期测试手动触发,确保系统健康
故障排查资源
- 使用 I/O 状态界面进行实时诊断
- 检查 Node-RED 调试面板,排查逻辑问题
- 确认外部设备规格与输出能力匹配
- 记录配置变更,便于后续维护
后续步骤
配置数字输出后:
- 根据需要设置数字输入触发
- 配置 PLC 通信,实现集成自动化
- 实施生产环境安全联锁
- 创建自动监控,保障系统健康